#pragma once

template <typename Key, typename Val>
class hMapNode;

template <typename Key, typename Val>
class hMap
{
	friend class hMapNode<Key, Val>;

	hMapNode<Key, Val>* _root = NULL;
	//using Iter = _hHashMapIterator<Key, Val, Hash>;

public:
	hMap();
	~hMap();

	template<typename... Args>
	void emplace(Key k, Args... args);
	void erase(Key k);
	//Iter find(Key k);
	//Iter begin();
	//Iter end();

	std::ostream& fillDebug(std::ostream& os) const;
};

#include "hMapImpl.h"
